로딩 중이에요... 🐣
[코담]
웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트
02 Djoser Ninja 백엔드시작 | ✅ 편저: 코담 운영자
Djoser + Django Ninja를 활용한 Django 백엔드 프로젝트 시작 방법 (디렉토리: codam
, 설정 모듈: config
)
이 문서는 Cookiecutter를 사용하지 않고, 일반적인 방법으로 Django 프로젝트를 시작하고 디렉토리 구조를 codam
+ config
형식으로 구성하는 방법을 설명합니다.
1. 가상환경 생성 및 Django 설치
python -m venv venv
source venv/bin/activate # Windows는 venv\Scripts\activate
pip install django
2. Django 프로젝트 생성 (config
설정 디렉토리)
django-admin startproject config codam
- 이 명령은
codam/
디렉토리 내에 Django 프로젝트의 설정을config/
폴더로 생성합니다.
디렉토리 구조
codam/
├── config/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── asgi.py
│ └── wsgi.py
├── manage.py
3. 개발 서버 실행 확인
cd codam
python manage.py runserver
정상 실행되면
http://127.0.0.1:8000/
에 Django 초기 화면이 출력됩니다.
4. 주요 작업 요약
항목 | 설명 |
---|---|
프로젝트 디렉토리 | codam |
설정 모듈 | config.settings |
앱 생성 예 | python manage.py startapp accounts |
5. 설정 커스터마이징 체크리스트
ALLOWED_HOSTS
설정 (settings.py
)INSTALLED_APPS
에 사용자 앱 추가TIME_ZONE
,LANGUAGE_CODE
변경- 데이터베이스 설정 (기본 SQLite 외 PostgreSQL 등)
✅ 정리
- Django 기본 방식으로 프로젝트를 시작할 경우,
codam/config
구조로 깔끔하게 구성 가능 - 이후 Djoser, Django Ninja, REST Framework 등은 필요 시 추가로 구성
🔒 Djoser + Django Ninja 연동 방법
일반 Django 프로젝트에서 RESTful 인증 API 및 타입 안전 API 라우팅을 위해 Djoser + Django Ninja를 함께 구성하는 방법입니다.
1. 필수 패키지 설치
pip install djangorestframework djoser djangorestframework-simplejwt django-ninja
2. config/settings.py
설정
INSTALLED_APPS += [
'rest_framework',
'rest_framework.authtoken',
'djoser',
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication',
),
}
from datetime import timedelta
SIMPLE_JWT = {
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=30),
'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
}
3. Djoser URL 설정 (config/urls.py
)
from django.contrib import admin
from django.urls import path, include
from api.api import api # Django Ninja API
urlpatterns = [
path('admin/', admin.site.urls),
path('auth/', include('djoser.urls')),
path('auth/', include('djoser.urls.jwt')),
path('api/', api.urls),
]
4. Django Ninja API 라우터 생성 (api/api.py
)
# codam/api/api.py
from ninja import NinjaAPI
from django.contrib.auth.models import User
from pydantic import BaseModel
api = NinjaAPI()
class UserOut(BaseModel):
id: int
username: str
@api.get("/users", response=list[UserOut])
def list_users(request):
return list(User.objects.all())
필요 시
startapp api
명령으로api
앱을 만들고 위 파일 구조를 구성하세요.
🔐 테스트 URL 예시
목적 | URL |
---|---|
회원가입 | POST /auth/users/ |
로그인 (JWT) | POST /auth/jwt/create/ |
사용자 목록 (Ninja API) | GET /api/users |
✅ 통합 구성 정리
Djoser
는 인증 관련 URL/기능을 간단히 구현 가능Django Ninja
는 타입 기반 API 라우팅과 문서화를 지원JWT
를 통한 로그인 인증이 가능하며, React/Next.js 등의 프론트엔드와 연동하기 용이함
다음 단계: Next.js 15 프론트엔드 설치 및 Django 연동 방법 안내로 이어집니다.